home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / comm2 / termsorc.lha / Extras / Source / term-source.lha / ClipPanel.c < prev    next >
C/C++ Source or Header  |  1995-09-26  |  7KB  |  353 lines

  1. /*
  2. **    ClipPanel.c
  3. **
  4. **    Editing panel for clipboard configuration
  5. **
  6. **    Copyright © 1990-1995 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_UNIT=1000,GAD_USE,GAD_CANCEL,GAD_DEFAULT,
  13.         GAD_PAGER,GAD_PAGEGROUP
  14.     };
  15.  
  16. STATIC STRPTR __saveds
  17. ShowTime(struct Gadget *SomeGadget,WORD Level)
  18. {
  19.     return(LocaleSeconds(Level));
  20. }
  21.  
  22. BYTE __regargs
  23. ClipPanel(struct Configuration *Config,BYTE *Default)
  24. {
  25.     STATIC LONG PageTitleID[3] =
  26.     {
  27.         MSG_V36_0019,
  28.         MSG_V36_0020,
  29.         -1
  30.     };
  31.  
  32.     STATIC BYTE         InitialPage = 0;
  33.  
  34.     struct LayoutHandle    *Handle;
  35.     BYTE             Cancel = FALSE;
  36.  
  37.     SaveConfig(Config,PrivateConfig);
  38.  
  39.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  40.         LH_LocaleHook,    &LocaleHook,
  41.         LH_ExitFlush,    FALSE,
  42.     TAG_DONE))
  43.     {
  44.         struct Window *PanelWindow;
  45.  
  46.         LT_New(Handle,
  47.             LA_Type,    VERTICAL_KIND,
  48.         TAG_DONE);
  49.         {
  50.             LT_New(Handle,
  51.                 LA_Type,VERTICAL_KIND,
  52.             TAG_DONE);
  53.             {
  54.                 LT_New(Handle,
  55.                     LA_Type,    TAB_KIND,
  56.                     LA_ID,        GAD_PAGER,
  57.                     LA_LabelID,    MSG_XFER_PAGE_TXT,
  58.                     LACY_LabelTable,PageTitleID,
  59.                     LACY_AutoPageID,GAD_PAGEGROUP,
  60.                     LACY_TabKey,    TRUE,
  61.                     LA_BYTE,    &InitialPage,
  62.                     LATB_FullWidth,    TRUE,
  63.                 TAG_DONE);
  64.  
  65.                 LT_EndGroup(Handle);
  66.             }
  67.  
  68.             LT_New(Handle,
  69.                 LA_Type,    VERTICAL_KIND,
  70.                 LA_ID,        GAD_PAGEGROUP,
  71.                 LAGR_ActivePage,InitialPage,
  72.             TAG_DONE);
  73.             {
  74.                 LT_New(Handle,
  75.                     LA_Type,    VERTICAL_KIND,
  76.                 TAG_DONE);
  77.                 {
  78.                     LT_New(Handle,
  79.                         LA_Type,    VERTICAL_KIND,
  80.                     TAG_DONE);
  81.                     {
  82.                         LT_New(Handle,
  83.                             LA_Type,        INTEGER_KIND,
  84.                             LA_LabelID,        MSG_CLIPPANEL_UNIT_GAD,
  85.                             LA_WORD,        &Config -> ClipConfig -> ClipboardUnit,
  86.                             LA_Chars,        20,
  87.                             LAIN_Min,        0,
  88.                             LAIN_Max,        255,
  89.                             LA_ID,            GAD_UNIT,
  90.                             LAIN_UseIncrementers,    TRUE,
  91.                             GTIN_MaxChars,        3,
  92.                         TAG_DONE);
  93.  
  94.                         LT_New(Handle,
  95.                             LA_Type,    XBAR_KIND,
  96.                         TAG_DONE);
  97.  
  98.                         LT_New(Handle,
  99.                             LA_Type,    STRING_KIND,
  100.                             LA_LabelID,    MSG_CLIPPANEL_PASTE_PREFIX_GAD,
  101.                             LA_STRPTR,    Config -> ClipConfig -> InsertPrefix,
  102.                             GTST_MaxChars,    79,
  103.                         TAG_DONE);
  104.  
  105.                         LT_New(Handle,
  106.                             LA_Type,    STRING_KIND,
  107.                             LA_LabelID,    MSG_CLIPPANEL_PASTE_SUFFIX_GAD,
  108.                             LA_STRPTR,    Config -> ClipConfig -> InsertSuffix,
  109.                             GTST_MaxChars,    79,
  110.                         TAG_DONE);
  111.  
  112.                         LT_New(Handle,
  113.                             LA_Type,    XBAR_KIND,
  114.                         TAG_DONE);
  115.  
  116.                         LT_EndGroup(Handle);
  117.                     }
  118.  
  119.                     LT_New(Handle,
  120.                         LA_Type,    VERTICAL_KIND,
  121.                     TAG_DONE);
  122.                     {
  123.                         LT_New(Handle,
  124.                             LA_Type,    CHECKBOX_KIND,
  125.                             LA_LabelID,    MSG_CONVERT_LF_TXT,
  126.                             LA_BYTE,    &Config -> ClipConfig -> ConvertLF,
  127.                         TAG_DONE);
  128.  
  129.                         LT_EndGroup(Handle);
  130.                     }
  131.  
  132.                     LT_EndGroup(Handle);
  133.                 }
  134.  
  135.                 LT_New(Handle,
  136.                     LA_Type,    VERTICAL_KIND,
  137.                 TAG_DONE);
  138.                 {
  139.                     LT_New(Handle,
  140.                         LA_Type,    VERTICAL_KIND,
  141.                     TAG_DONE);
  142.                     {
  143.                         LT_New(Handle,
  144.                             LA_Type,    CYCLE_KIND,
  145.                             LA_LabelID,    MSG_CLIPPANEL_TEXT_PACING_GAD,
  146.                             LA_UBYTE,    &Config -> ClipConfig -> PacingMode,
  147.                             LACY_FirstLabel,MSG_CLIPPANEL_DIRECT_TXT,
  148.                             LACY_LastLabel,    MSG_CLIPPANEL_KEYDELAY_TXT,
  149.                         TAG_DONE);
  150.  
  151.                         LT_EndGroup(Handle);
  152.                     }
  153.  
  154.                     LT_New(Handle,
  155.                         LA_Type,    VERTICAL_KIND,
  156.                         LA_LabelID,    MSG_V36_0021,
  157.                     TAG_DONE);
  158.                     {
  159.                         LT_New(Handle,
  160.                             LA_Type,        SliderType,
  161.                             LA_LabelID,        MSG_CLIPPANEL_CHAR_DELAY_GAD,
  162.                             GTSL_Min,        0,
  163.                             GTSL_Max,        10 * 100,
  164.                             LA_Chars,        10,
  165.                             LA_WORD,        &Config -> ClipConfig -> CharDelay,
  166.                             GTSL_LevelFormat,    "%s s",
  167.                             GTSL_DispFunc,        ShowTime,
  168.                         TAG_DONE);
  169.  
  170.                         LT_New(Handle,
  171.                             LA_Type,        SliderType,
  172.                             LA_LabelID,        MSG_CLIPPANEL_LINE_DELAY_GAD,
  173.                             GTSL_Min,        0,
  174.                             GTSL_Max,        10 * 100,
  175.                             LA_Chars,        10,
  176.                             LA_WORD,        &Config -> ClipConfig -> LineDelay,
  177.                             GTSL_LevelFormat,    "%s s",
  178.                             GTSL_DispFunc,        ShowTime,
  179.                         TAG_DONE);
  180.  
  181.                         LT_EndGroup(Handle);
  182.                     }
  183.  
  184.                     LT_New(Handle,
  185.                         LA_Type,    VERTICAL_KIND,
  186.                         LA_LabelID,    MSG_V36_0024,
  187.                     TAG_DONE);
  188.                     {
  189.                         LT_New(Handle,
  190.                             LA_Type,        STRING_KIND,
  191.                             LA_LabelID,        MSG_CLIPPANEL_LINE_PROMPT_GAD,
  192.                             LA_STRPTR,        Config -> ClipConfig -> LinePrompt,
  193.                             LA_Chars,        10,
  194.                             GTST_MaxChars,        255,
  195.                         TAG_DONE);
  196.  
  197.                         LT_New(Handle,
  198.                             LA_Type,        SliderType,
  199.                             LA_LabelID,        MSG_CLIPPANEL_SEND_TIMEOUT_GAD,
  200.                             GTSL_Min,        0,
  201.                             GTSL_Max,        10 * 100,
  202.                             LA_WORD,        &Config -> ClipConfig -> SendTimeout,
  203.                             GTSL_LevelFormat,    "%s s",
  204.                             GTSL_DispFunc,        ShowTime,
  205.                         TAG_DONE);
  206.  
  207.                         LT_EndGroup(Handle);
  208.                     }
  209.  
  210.                     LT_EndGroup(Handle);
  211.                 }
  212.  
  213.                 LT_EndGroup(Handle);
  214.             }
  215.  
  216.             LT_New(Handle,
  217.                 LA_Type,VERTICAL_KIND,
  218.             TAG_DONE);
  219.             {
  220.                 LT_New(Handle,
  221.                     LA_Type,    XBAR_KIND,
  222.                     LAXB_FullSize,    TRUE,
  223.                 TAG_DONE);
  224.  
  225.                 LT_EndGroup(Handle);
  226.             }
  227.  
  228.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  229.                 LAGR_SameSize,    TRUE,
  230.                 LAGR_Spread,    TRUE,
  231.             TAG_DONE);
  232.             {
  233.                 LT_New(Handle,
  234.                     LA_Type,    BUTTON_KIND,
  235.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  236.                     LA_ID,        GAD_USE,
  237.                     LABT_ReturnKey,    TRUE,
  238.                     LABT_ExtraFat,    TRUE,
  239.                 TAG_DONE);
  240.  
  241.                 if(Default)
  242.                 {
  243.                     LT_New(Handle,
  244.                         LA_Type,    BUTTON_KIND,
  245.                         LA_LabelID,    MSG_GLOBAL_DEFAULT_GAD,
  246.                         LA_ID,        GAD_DEFAULT,
  247.                         LABT_ExtraFat,    TRUE,
  248.                     TAG_DONE);
  249.                 }
  250.  
  251.                 LT_New(Handle,
  252.                     LA_Type,    BUTTON_KIND,
  253.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  254.                     LA_ID,        GAD_CANCEL,
  255.                     LABT_EscKey,    TRUE,
  256.                     LABT_ExtraFat,    TRUE,
  257.                 TAG_DONE);
  258.  
  259.                 LT_EndGroup(Handle);
  260.             }
  261.  
  262.             LT_EndGroup(Handle);
  263.         }
  264.  
  265.         if(PanelWindow = LT_Build(Handle,
  266.             LAWN_TitleID,        MSG_CLIPPANEL_CLIP_SETTINGS_TXT,
  267.             LAWN_IDCMP,        IDCMP_CLOSEWINDOW,
  268.             LAWN_HelpHook,        &GuideHook,
  269.             LAWN_Parent,        Window,
  270.             WA_DepthGadget,        TRUE,
  271.             WA_CloseGadget,        TRUE,
  272.             WA_DragBar,        TRUE,
  273.             WA_RMBTrap,        TRUE,
  274.             WA_Activate,        TRUE,
  275.             WA_SimpleRefresh,    TRUE,
  276.         TAG_DONE))
  277.         {
  278.             struct IntuiMessage    *Message;
  279.             BOOLEAN             Done = FALSE;
  280.             ULONG             MsgClass;
  281.             struct Gadget        *MsgGadget;
  282.  
  283.             GuideContext(CONTEXT_CLIP);
  284.  
  285.             PushWindow(PanelWindow);
  286.  
  287.             LT_ShowWindow(Handle,TRUE);
  288.  
  289.             do
  290.             {
  291.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  292.                 {
  293.                     SaveConfig(PrivateConfig,Config);
  294.  
  295.                     break;
  296.                 }
  297.  
  298.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  299.                 {
  300.                     MsgClass    = Message -> Class;
  301.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  302.  
  303.                     LT_ReplyIMsg(Message);
  304.  
  305.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  306.                     {
  307.                         SaveConfig(PrivateConfig,Config);
  308.  
  309.                         Done = TRUE;
  310.                     }
  311.  
  312.                     if(MsgClass == IDCMP_GADGETUP)
  313.                     {
  314.                         switch(MsgGadget -> GadgetID)
  315.                         {
  316.                             case GAD_USE:
  317.  
  318.                                 LT_UpdateStrings(Handle);
  319.  
  320.                                 Done = TRUE;
  321.                                 break;
  322.  
  323.                             case GAD_CANCEL:
  324.  
  325.                                 SaveConfig(PrivateConfig,Config);
  326.  
  327.                                 Cancel = Done = TRUE;
  328.                                 break;
  329.  
  330.                             case GAD_DEFAULT:
  331.  
  332.                                 *Default = TRUE;
  333.  
  334.                                 Done = TRUE;
  335.                                 break;
  336.                         }
  337.                     }
  338.                 }
  339.             }
  340.             while(!Done);
  341.  
  342.             PopWindow();
  343.         }
  344.  
  345.         LT_DeleteHandle(Handle);
  346.     }
  347.  
  348.     if(Default)
  349.         return((BYTE)(!Cancel));
  350.     else
  351.         return((BYTE)memcmp(PrivateConfig -> ClipConfig,Config -> ClipConfig,sizeof(struct ClipSettings)));
  352. }
  353.